home *** CD-ROM | disk | FTP | other *** search
- property pTrackmanager, pSN, pPosition, pDirection, pAnimCounter, pAnimStates, pVelocity, pAnimSpeed
-
- on new me, tTrackManager, tPos, tCarPos, tWheelMembers
- pTrackmanager = tTrackManager
- pSN = pTrackmanager.getSpriteManager().getSN(1, #poppingwheel)
- t = tPos + tCarPos
- pPosition = point(t[1], t[2])
- pWheelMembers = tWheelMembers
- pVelocity = tPos + [random(-20, 20) / 2.0, random(-20, 20) / 2.0]
- pTrackmanager.INeedADisplayUpdateEachFrame(me)
- pTrackmanager.INeedAnUpdateEachFrame(me)
- pAnimSpeed = random(10, 40) / 10.0
- sprite(pSN).member = tWheelMembers[3]
- sprite(pSN).ink = 36
- sprite(pSN).backColor = rgb(255, 0, 255).paletteIndex
- sprite(pSN).rect = sprite(pSN).member.rect
- sprite(pSN).loc = point(-100, -100)
- pAnimStates = []
- repeat with i = 1 to 10
- pAnimStates.append([#member: tWheelMembers[random(5)], #rotation: random(360)])
- end repeat
- pAnimCounter = 0
- return me
- end
-
- on Update me, tTime
- pAnimCounter = pAnimCounter + (tTime / pAnimSpeed)
- t = min(max(1, integer(pAnimCounter)), pAnimStates.count)
- sprite(pSN).member = pAnimStates[t][#member]
- sprite(pSN).rotation = pAnimStates[t][#rotation]
- if getLength(pVelocity) > 2 then
- pVelocity = pVelocity * power(0.90000000000000002, tTime)
- else
- pTrackmanager.IDontNeedAnUpdateEachFrame(me)
- end if
- pPosition = pPosition + (pVelocity * tTime / 10.0)
- end
-
- on cleanUp me
- pTrackmanager.IDontNeedADisplayUpdateEachFrame(me)
- pTrackmanager.IDontNeedAnUpdateEachFrame(me)
- pTrackmanager = 0
- pCar = 0
- return 0
- end
-
- on display me, tScrollOffset
- sprite(pSN).loc = pPosition + tScrollOffset
- end
-